package com.smart.seven.aop.jdk;

import java.lang.reflect.Proxy;

/**
 * @author junrui.wang
 * @create 2018/7/24
 */
public class Test {
    public static void main(String[] args) {
        //jdk创建代理有一个限制，只能为接口创建代理实例。

        //代理目标业务类
        ForumService target = new ForumServiceImpl();

        //将目标业务类和横切代码编制在一起
        PerformanceHandle handle = new PerformanceHandle(target);

        //根据目标业务类逻辑和性能监视横切逻辑的InvocationHandler实例创建代理实例
        ForumService proxy = (ForumService) Proxy.newProxyInstance(target.getClass().getClassLoader(),
                target.getClass().getInterfaces(), //getInterfaces()代理目标业务类的所有接口
                handle);

        proxy.removeTopic(100);
        proxy.removeForum(1022);
    }
}
